This application relates to the operation of re-programmable non-volatile memory systems such as semiconductor flash memory that can store more than one bit per cell by writing multiple states, and more specifically, to methods of programming data in such memory systems so that earlier-written data is not endangered during programming of later data.
Solid-state memory capable of nonvolatile storage of charge, particularly in the form of EEPROM and flash EEPROM packaged as a small form factor card, has recently become the storage of choice in a variety of mobile and handheld devices, notably information appliances and consumer electronics products. Unlike RAM (random access memory) that is also solid-state memory, flash memory is non-volatile, and retains its stored data even after power is turned off. Also, unlike ROM (read only memory), flash memory is rewritable similar to a disk storage device. In spite of the higher cost, flash memory is increasingly being used in mass storage applications.
Flash EEPROM is similar to EEPROM (electrically erasable and programmable read-only memory) in that it is a non-volatile memory that can be erased and have new data written or “programmed” into their memory cells. Both utilize a floating (unconnected) conductive gate, in a field effect transistor structure, positioned over a channel region in a semiconductor substrate, between source and drain regions. A control gate is then provided over the floating gate. The threshold voltage characteristic of the transistor is controlled by the amount of charge that is retained on the floating gate. That is, for a given level of charge on the floating gate, there is a corresponding voltage (threshold) that must be applied to the control gate before the transistor is turned “on” to permit conduction between its source and drain regions. Flash memory such as Flash EEPROM allows entire blocks of memory cells to be erased at the same time.
The floating gate can hold a range of charges and therefore can be programmed to any threshold voltage level within a threshold voltage window. The size of the threshold voltage window is delimited by the minimum and maximum threshold levels of the device, which in turn correspond to the range of the charges that can be programmed onto the floating gate. The threshold window generally depends on the memory device's characteristics, operating conditions and history. Each distinct, resolvable threshold voltage level range within the window may, in principle, be used to designate a definite memory state of the cell.
In order to improve read and program performance, multiple charge storage elements or memory transistors in an array are read or programmed in parallel. Thus, a “page” of memory elements are read or programmed together. In existing memory architectures, a row typically contains several interleaved pages or it may constitute one page. All memory elements of a page are read or programmed together.
In one common arrangement, individual cells may use two or more memory states to store one or more bits of data. Initially, a page of memory cells may be programmed with a “lower page” of data consisting of one bit per cell. Later programming may add an “upper page” of data in the same cells by writing an additional bit in each cell. More than two bits may also be successively stored in this way in some memory systems. Where data is programmed to cells that contain earlier-written data there is a danger that the earlier-written data may be damaged by the writing process so that it may not be recoverable. For example, if a write abort occurs during writing of upper page data then lower page data may be unrecoverable from the memory cells because they are in some intermediate states that do not reflect the lower page bits. Where earlier-written data is from another write command the data may be unrecoverable from any other source (i.e. there may be no other copy). Avoiding endangering such data during later programming is generally desirable.